// pages/indax/indax.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    banners: [{
        url: "../../images/u=2080442650,2589120012&fm=253&fmt=auto&app=138&f=JPEG.webp"
      },
      {
        url: "../../images/u=2247572524,796276294&fm=253&fmt=auto&app=138&f=JPEG.webp"
      },
      {
        url: "../../images/u=897218793,3938383722&fm=253&fmt=auto&app=138&f=JPEG.webp"
      }
    ],
    show: false,
    currentIndex: 0,
    category: [],
    drink: [],
    cart: [],
    num: 0,
    money: 0
  },
  //点击分类
  selectTab(e) {
    this.setData({
      currentIndex: e.currentTarget.dataset.index
    })
    if (this.data.currentIndex == 0) {
      this.getAllDrink()
    } else {
      this.getDrink()
    }
  },
  //按字段值分组
  getCategory() {
    wx.cloud.database().collection('drink').aggregate()
      .group({
        _id: '$category',
      })
      .end()
      .then(res => {
        console.log('分类', res);
        let list = res.list
        list.unshift({
          _id: "全部推荐"
        })
        console.log(list);
        this.setData({
          category: list
        })
      })
  },
  //获取全部商品信息
  getAllDrink() {
    wx.cloud.database().collection('drink').get()
      .then(res => {
        console.log('搜索成功', res);
        let list = res.data
        console.log(list);
        if (list && list.length > 0) {
          list.forEach(item => {
            item.num = 0;
            // cart.forEach(cart => {
            //   if (cart._id == item._id) {
            //     item.num = cart.num ? cart.num : 0;
            //   }
            // });
          });
          this.setData({
            drink: list
          })
        }
      })
  },
  //根据分类获取饮品信息
  getDrink() {
    wx.cloud.database().collection('drink').where({
        category: this.data.category[this.data.currentIndex]._id
      }).get()
      .then(res => {
        console.log('搜索成功', res);
        let list = res.data
        console.log(list);
        if (list && list.length > 0) {
          list.forEach(item => {
            item.num = 0;
            // cart.forEach(cart => {
            //   if (cart._id == item._id) {
            //     item.num = cart.num ? cart.num : 0;
            //   }
            // });
          });
          this.setData({
            drink: list
          })
        }
      })
  },
  //打开购物车弹窗
  cartshow() {
    if (this.data.cart.length > 0) {
      this.setData({
        show: true
      })
    } else {
      wx.showToast({
        icon: 'none',
        title: '你还没有添加购物车',
      })
    }
  },
  //关闭购物车弹窗
  cartnoshow() {
    this.setData({
      show: false
    })
  },


  //添加购物车
  getCart(e) {
    let id = e.currentTarget.dataset.id
    let list = this.data.drink
    let money = this.data.money
    let num = this.data.num
    let cart = this.data.cart
    list.forEach(item=>{//遍历数组
      if(item._id==id){//如果遍历到_id=id，则执行
        item.num+=1
          money+=item.price,
          num+=1
          if(cart&&cart.length>0){//判断购物车里面是否有这条菜品的数据如果有数量+1，否则添加到购物车
            var cartitem = cart.find((cart) => {
              return cart._id == id;
          })
          if(!cartitem){//判断购物车里面是否有这条菜品的数据如果有数量+1，否则添加到购物车
            cart.push(item)
          }
          }else{
            cart.push(item)
          }
      }
    })
    this.setData({
      drink:list,
      money:money,
      num:num,
      cart:cart
    })
    wx.setStorageSync('cart', cart)//将购物车数据存入缓存
    console.log("添加购物车的数据",cart);
  },
  //减少
  removeCart(e){
      let id = e.currentTarget.dataset.id
      let list = this.data.drink
      let money = this.data.money
      let num = this.data.num
      let cart = this.data.cart
      list.forEach(item=>{
        if(item._id==id){
          if(item.num>0){
            item.num-=1
              money-=item.price,
              num-=1
              if(cart&&cart.length>0){//判断购物车里面是否有这条菜品的数据如果有数量+1，否则添加到购物车
                var index = cart.findIndex((cart) => {//findIndex()方法返回数组中满足提供的测试函数的第一个元素的索引。否则返回-1。
                  return cart._id == id;
              })
              if(item.num==0){//如果点击减少到数量为0，则移除cart数组
                cart.splice(index,1)//根据下标删除数组中的元素
                if(this.data.cart.length==0){
                  this.setData({
                    show:false
                  })
                }
              }
              }
          }else{
            wx.showToast({
              icon:'none',
              title: '数量不能小于0',
            })
          }
        }
      })
      this.setData({
        drink:list,
        money:money,
        num:num,
        cart:cart
      })
      wx.setStorageSync('cart', cart)
      console.log("减少购物车的数据",cart);
    
  },
  //清空购物车
  clearcart(){
    wx.removeStorageSync('cart')//清除购物车缓存
    let list = this.data.drink
    list.forEach(item=>{
      item.num=0
    })
    this.setData({
      cart:[],
      drink:list,
      money:0,
      num:0,
      show:false
    })
  },
  //支付
  buy(){
    let cart = this.data.cart
    if(cart.length>0){
      wx.navigateTo({
        url: '/pages/buy/buy',
      })
    }else{
      wx.showToast({
        icon:'none',
        title: '你还没有添加购物车',
      })
    }
  },



  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.getCategory()
    this.getAllDrink()
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {},

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})